package com.kamistoat.meimeistore.moduleslocalfile.service.impl;

import com.kamistoat.meimeistore.moduleslocalfile.config.FileConfig;
import com.kamistoat.meimeistore.moduleslocalfile.utils.FileUploadUtils;
import com.kamistoat.meimeistore.moduleslocalfile.service.SysFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

/**
 * 使用纯粹的本地持久化算法存储文件
 */
@Service("LocalSysFileServiceImpl")
public class LocalSysFileServiceImpl implements SysFileService {

    @Autowired
    FileConfig fileConfig;

    /**
     * 域名或本机访问地址
     */
    private final String domain = fileConfig.getDomain();

    /**
     * 上传文件存储在本地的根路径。示例: /home/kamistoat/meimeistore/
     */
    private final String localFileBaseDir = fileConfig.getBaseDir();

    /**
     * 文件资源请求前缀。示例: /statics
     */
    private final String localFilePrefix = fileConfig.getPrefix();


    /**
     * 文件上传接口
     *
     * @param multipartFile multipartFile文件
     * @return 持久化成功后的文件访问地址。将由 文件服务器Ip/文件资源标识符/文件在根目录下的绝对路径 组成
     * @throws Exception
     */
    @Override
    public String uploadFile(MultipartFile multipartFile) throws Exception {
        String absoluteName = FileUploadUtils.upload(localFileBaseDir, multipartFile);
        // 最终的结果为文件的访问路径。注意使用 localFilePrefix 替换了文件根目录
        String fileURL = domain + localFilePrefix + absoluteName;
        return fileURL;
    }
}
